package nowCoder;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class HJ24 {
    /*
            描述
        N 位同学站成一排，音乐老师要请最少的同学出列，使得剩下的 K 位同学排成合唱队形。
        设K位同学从左到右依次编号为 1，2…，K ，他们的身高分别为T1,T2,Tk，若存在i(1≤i≤K) 使得T1<T2<Tk且Ti>Ti+1>Tk，则称这K名同学排成了合唱队形。
        通俗来说，能找到一个同学，他的两边的同学身高都依次严格降低的队形就是合唱队形。
        例子：
        123 124 125 123 121 是一个合唱队形
        123 123 124 122不是合唱队形，因为前两名同学身高相等，不符合要求
        123 122 121 122不是合唱队形，因为找不到一个同学，他的两侧同学身高递减。
        你的任务是，已知所有N位同学的身高，计算最少需要几位同学出列，可以使得剩下的同学排成合唱队形。
        注意：不允许改变队列元素的先后顺序 且 不要求最高同学左右人数必须相等
        数据范围： 1≤n≤3000
        输入描述： 用例两行数据，第一行是同学的总数 N ，第二行是 N 位同学的身高，以空格隔开
        输出描述： 最少需要几位同学出列
        例：
        124
        16 103 132 23 211 75 155 82 32 48 79 183 13 91 51 172 109 102 189 121 12 120 116 133 79 120 116 208 47 110 65 187 69 143 140 173 203 35 184 49 245 50 179 63 204 34 218 11 205 100 90 19 145 203 203 215 72 108 58 198 95 116 125 235 156 133 220 236 125 29 235 170 130 165 155 54 127 128 204 62 59 226 233 245 46 3 14 108 37 94 52 97 159 190 143 67 24 204 39 222 245 233 11 80 166 39 224 12 38 13 85 21 47 25 180 219 140 201 11 42 110 209 77 136
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            int[] heights = new int[n];
            int[] up = new int[n];
            int[] down = new int[n];
            for(int i = 0; i< n; i++){
                heights[i] = in.nextInt();
                up[i] = 1;
                down[i] = 1;
            }
            for(int i = 1; i< n; i ++){
                for( int j = 0; j<i; j++){
                    if(heights[i] > heights[j]){
                        up[i] = Math.max(up[i], up[j] + 1);
                    }
                }
            }
            for(int i = n-2; i>=0;i--){
                for(int j = n-1; j >=i ; j--){
                    if(heights[i] > heights[j]){
                        down[i] = Math.max(down[i], down[j] + 1);
                    }
                }
            }
            int temp = n;
            for(int i = 0; i<n ;i ++){
                temp = Math.min(temp, n - up[i] - down[i] + 1);
            }
            System.out.println(temp);
            System.out.println(Arrays.toString(up));
            System.out.println(Arrays.toString(down));
    }
}
